Commit 6743758c authored by PidgeyL's avatar PidgeyL
Browse files

initial commit starring

parent 93fca171
Loading
Loading
Loading
Loading
+25 −2
Original line number Diff line number Diff line
@@ -96,10 +96,13 @@ def setAdmin(user, admin):
  else:
    colUSERS.update({'username': user}, {'$unset': {'master': ""}})

def createUserData(user):
  colSEEN.insert({"user": user, "seen_cves": [], "bookmarked": []})

def seenCVEs(user):
  data = colSEEN.find_one({"user": user})
  if not data:
    colSEEN.insert({"user": user, "seen_cves": []})
    createUserData(user)
    return []
  else:
    return data['seen_cves']
@@ -116,6 +119,26 @@ def removeSeenCVEs(user, CVEs):
  if type(CVEs) == list:
    colSEEN.update({"user": user}, {"$pullAll": {"seen_cves": CVEs}})

def bookmarks(user):
  data = colSEEN.find_one({"user": user})
  if not data:
    createUserData(user)
    return []
  else:
    return data["bookmarked"]

def addBookmarks(user, bms):
  if type(bms) == str: bms=[bms]
  if type(bms) == list:
    bm=list(set(bms)-set(bookmarks(user)))
    if bm:
      colSEEN.update({"user": user}, {"$addToSet": {"bookmarked": {"$each": bm}}})

def removeBookmarks(user, bms):
  if type(bms) == str: bookmarks=[bms]
  if type(bms) == list:
    colSEEN.update({"user": user}, {"$pullAll": {"bookmarked": bms}})

def isMasterAccount(user):
  return False if colUSERS.find({"username": user, "master": True}).count() == 0 else True

+23 −1
Original line number Diff line number Diff line
@@ -370,7 +370,29 @@ def cve(cveid):
    cve = markCPEs(cve)
    if current_user.is_authenticated():
        dbLayer.addSeenCVEs(current_user.get_id(), cveid)
    return render_template('cve.html', cve=cve)
        bookmarked="yes" if cveid in dbLayer.bookmarks(current_user.get_id()) else "no"
    else:
        bookmarked=None
    return render_template('cve.html', cve=cve, bookmarked=bookmarked)

@app.route('/_bookmark', methods=['GET'])
def bookmark():
    bms = request.args.get('cve', type=str).split(",")
    try:
      dbLayer.addBookmarks(current_user.get_id(), bms)
      return jsonify({"status":"success"})
    except:
      return jsonify({"status": "failure"})

@app.route('/_un-bookmark', methods=['GET'])
def unbookmark():
    bms = request.args.get('cve', type=str).split(",")
    try:
      dbLayer.removeBookmarks(current_user.get_id(), bms)
      return jsonify({"status":"success"})
    except Exception as e:
      print(e)
      return jsonify({"status": "failure"})

@app.route('/browse/<vendor>')
@app.route('/browse/')
+24 −1
Original line number Diff line number Diff line
@@ -7,6 +7,21 @@
  <!-- javascript -->
  <script type="text/javascript" src="/static/js/ZeroClipboard.min.js"></script>
  <script type="text/javascript" src="/static/js/custom/cve.js"></script>
  <script>
  $(document).ready(function(){
    $("#star").on('click', function(event){
      if($("#star").hasClass("unstarred")){
        $.getJSON('/_bookmark',{cve:'{{cve["id"]}}'},function(data){
          if(data['status']=='success'){$("#star").attr("class", "glyphicon glyphicon-star starred")}
        })
      }else{
        $.getJSON('/_un-bookmark',{cve:'{{cve["id"]}}'},function(data){
          if(data['status']=='success'){$("#star").attr("class", "glyphicon glyphicon-star-empty unstarred")}
        })
      }
    })
  })
  </script>
</head>

<body>
@@ -32,7 +47,15 @@
            <tbody>
              <tr>
                <td class="warning">ID</td>
                <td class="info">{{ cve['id'] }} <button type="button" style="float:right" id="copy-button" name="copy"><span class="glyphicon glyphicon-copy" aria-hidden="true"></span> Copy to Clipboard</button></td>
                <td class="info">
                  {{ cve['id'] }}
                  {% if bookmarked == "yes"%}
                    <span id="star" class="glyphicon glyphicon-star starred" aria-hidden="true"></span>
                  {% elif bookmarked == "no" %}
                    <span id="star" class="glyphicon glyphicon-star-empty unstarred" aria-hidden="true"></span>
                  {% endif %}
                  <button type="button" style="float:right" id="copy-button" name="copy"><span class="glyphicon glyphicon-copy" aria-hidden="true"></span> Copy to Clipboard</button>
                </td>
              </tr>
              <tr>
                <td class="warning">Summary</td>